package com.dmgis.qxfw.dataservice.bigdata.controller;

/**
 * 功能描述：
 *
 * @auther： zhangyonglong
 * @date：
 * @return：
 * @description
 */
public class ComDisplayController {

    // 内部类，不使用static
    public class DistanceUtil {
        // 地球半径
        private static final double EARTH_RADIUS = 6371; // 单位：千米

        /**
         * 根据经纬度计算两点之间的距离
         * @param lat1 第一点的纬度
         * @param lon1 第一点的经度
         * @param lat2 第二点的纬度
         * @param lon2 第二点的经度
         * @return 两点之间的距离，单位：千米
         */
        public double getDistance(double lat1, double lon1, double lat2, double lon2) {
            // 将角度转为弧度
            lat1 = Math.toRadians(lat1);
            lon1 = Math.toRadians(lon1);
            lat2 = Math.toRadians(lat2);
            lon2 = Math.toRadians(lon2);

            // Haversine公式
            double dlon = lon2 - lon1;
            double dlat = lat2 - lat1;
            double a = Math.pow(Math.sin(dlat / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon / 2), 2);
            double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
            return EARTH_RADIUS * c;
        }
    }



}
